//package algorithm.interview.tencent;
//
//import java.util.Arrays;
//import java.util.Collections;
//import java.util.LinkedList;
//import java.util.stream.Collectors;
//
//class ListNode {
//   int val;
//   ListNode next = null;
//   public ListNode(int val) {
//     this.val = val;
//   }
// }
//
//public class Tencent {
//    public ListNode solve (ListNode[] a) {
//        // write code here
//        LinkedList<ListNode> list = new LinkedList<>();
//        for (ListNode n : a) {
//            list.add(n);
//        }
//        ListNode cur = new ListNode(-1);
//        ListNode head = cur;
//        while (true) {
//            for (int i = 0; i < list.size(); i++) {
//                ListNode n = list.remove();
//                if (n != null) {
//                    cur.next = n;
//                    cur = cur.next;
//                    n = n.next;
//                    if (n != null)
//                        list.add(n);
//                }
//            }
//            if (list.size() == 0)
//                break;
//        }
//        return head.next;
//
//        ListNode cur = new ListNode(-1);
//        ListNode head = cur;
//        while (true) {
//            int nullCount = 0;
//            for (int i = 0; i < a.length; i++) {
//                if (a[i] != null) {
//                    cur.next = a[i];
//                    cur = cur.next;
//                    a[i] = a[i].next;
//                } else {
//                    nullCount++;
//                }
//            }
//            if (nullCount == a.length)
//                break;
//        }
//        return head.next;
//    }
//}
